home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / alv.sun / alv.lha / src / p_notif.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-08  |  6.2 KB  |  274 lines

  1. /*************************************************** palette_notif.c
  2.  **********/
  3.  
  4. #include "p_include.h"
  5.  
  6. oid
  7. raw_a_box(pw, x0, y0, x1, y1, color)
  8.     Pixwin *pw;
  9.     int     x0, y0, x1, y1, color;
  10. {
  11.     pw_vector(pw, x0, y0, x1, y0, PIX_SRC, color);
  12.     pw_vector(pw, x1, y0, x1, y1, PIX_SRC, color);
  13.     pw_vector(pw, x1, y1, x0, y1, PIX_SRC, color);
  14.     pw_vector(pw, x0, y1, x0, y0, PIX_SRC, color);
  15. }
  16.  
  17. oid
  18. ill_a_box(pw, x0, y0, w, h, color)
  19.     Pixwin *pw;
  20.     int     x0, y0, w, h, color;
  21. {
  22.     pw_rop(pw, x0, y0, w, h, PIX_SRC | PIX_COLOR(color), NULL, 0, 0);
  23. }
  24.  
  25. oid
  26. eset_proc(item, event)
  27.     Panel_item item;
  28.     Event  *event;
  29. {
  30.     panel_set_value(red_slider, old_r);
  31.     panel_set_value(green_slider, old_g);
  32.     panel_set_value(blue_slider, old_b);
  33.     r[selected_n] = old_r;
  34.     g[selected_n] = old_g;
  35.     b[selected_n] = old_b;
  36.     update_colors(selected_n, 1,
  37.               &r[selected_n], &g[selected_n], &b[selected_n]
  38.         );
  39. }
  40.  
  41. oid
  42. oad_proc(item, event)
  43.     Panel_item item;
  44.     Event  *event;
  45. {
  46.     Pixwin *pw;
  47.     FILE   *fd;
  48.     int     i;
  49.  
  50.     if (fd = fopen((char *) panel_get_value(file_name_item), "r")) {
  51.         if ((pr = pr_load(fd, &colormap)) == NULL)
  52.             post_msg(PR_IO_ERR_RASREAD);
  53.         else {
  54.             if (colormap.length == 0)
  55.                 for (i = 0; i < 256; i++)
  56.                     r[i] = g[i] = b[i] = i;
  57.             else
  58.                 for (i = 0; i < colormap.length; i++) {
  59.                     r[i] = (unsigned char) colormap.map[0][i];
  60.                     g[i] = (unsigned char) colormap.map[1][i];
  61.                     b[i] = (unsigned char) colormap.map[2][i];
  62.                 }
  63.             fclose(fd);
  64.             window_set(display_canvas, CANVAS_RETAINED, FALSE,0);
  65.             put_colors(0, MAX_CMAP_LEN, r, g, b);
  66.             window_set(display_canvas, CANVAS_WIDTH, pr->pr_size.x, CANVAS_HEIGHT, pr->pr_size.y, CANVAS_RETAINED, TRUE, 0);
  67.             pw = canvas_pixwin(display_canvas);
  68.             pw_rop(pw, 0, 0, pr->pr_size.x, pr->pr_size.y, PIX_SRC, pr, 0, 0);
  69.             window_set(display_canvas,
  70.                 WIN_VERTICAL_SCROLLBAR, scrollbar_create(0),
  71.                 WIN_HORIZONTAL_SCROLLBAR, scrollbar_create(0),
  72.                 0);
  73.         }
  74.     } else
  75.         post_msg("Error: file not found (or Permission denied)");
  76. }
  77. ost_msg(s)
  78.     char   *s;
  79. {
  80.     panel_set_value(msg_item, s);
  81. }
  82.  
  83. oid
  84. ed_proc(item, value, event)
  85.     Panel_item item;
  86.     int     value;
  87.     Event  *event;
  88. {
  89.     r[selected_n] = (unsigned char) value;
  90.     update_colors(selected_n, 1,
  91.               &r[selected_n], &g[selected_n], &b[selected_n]
  92.         );
  93. }
  94.  
  95. oid
  96. reen_proc(item, value, event)
  97.     Panel_item item;
  98.     int     value;
  99.     Event  *event;
  100. {
  101.     g[selected_n] = (unsigned char) value;
  102.     update_colors(selected_n, 1,
  103.               &r[selected_n], &g[selected_n], &b[selected_n]
  104.         );
  105. }
  106.  
  107. oid
  108. lue_proc(item, value, event)
  109.     Panel_item item;
  110.     int     value;
  111.     Event  *event;
  112. {
  113.     b[selected_n] = (unsigned char) value;
  114.     update_colors(selected_n, 1,
  115.               &r[selected_n], &g[selected_n], &b[selected_n]
  116.         );
  117. }
  118.  
  119. oid
  120. ntry_id(pw, cmpentry)
  121.     Pixwin *pw;
  122.     int     cmpentry;
  123. {
  124.     char    yentry[12];
  125.  
  126.     sprintf(yentry, "%d", cmpentry);
  127.     pw_rop(pw, 0, 0, 26, bar_offset + MAX_CMAP_LEN * 3 + 10, PIX_CLR, NULL, 0, 0);
  128.     pw_text(pw, 24 - 8 * strlen(yentry), bar_offset + cmpentry * 3 + 4, PIX_SRC | PIX_DST, NULL, yentry);
  129. }
  130.  
  131. hort   markimage[] = {
  132. #include "../images/cursors/palette_mark.cursor"
  133. };
  134. pr_static(markpix, 16, 16, 1, markimage);
  135.  
  136. oid
  137. dvance_arrow(n)
  138.     int     n;
  139. {
  140.     Pixwin *spw;
  141.  
  142.     if (n >= MAX_CMAP_LEN)
  143.         return;
  144.     spw = canvas_pixwin(single_canvas);
  145.     pw_rop(spw, 80, 0, 100, 10 + (int) window_get(single_canvas, WIN_HEIGHT),
  146.            PIX_CLR, NULL, 0, 0);
  147.     pw_rop(spw, 80, bar_offset + n * 3 - 7, 16, 16, PIX_SRC | PIX_DST, &markpix, 0, 0);
  148.     entry_id(spw, n);
  149. }
  150.  
  151. oid
  152. aint_multiple_canvas()
  153. {
  154.     int     i, j, x0, y0, x1, y1;
  155.  
  156.     for (j = 0; j < 11; j++) {
  157.         for (i = 0; i < 24; i++) {
  158.             x0 = xoff + i * (cwidth + xspace);
  159.             y0 = yoff + j * (cheight + yspace);
  160.             x1 = x0 + cwidth;
  161.             y1 = y0 + cheight;
  162.             fill_a_box(canvas_pixwin(multiple_canvas), x0, y0, cwidth, cheight, ijton
  163.                    (i, j));
  164.             draw_a_box(canvas_pixwin(multiple_canvas), x0 - 1, y0 - 1, x1 + 1, y1 + 1,
  165.                    FGCOLOR);
  166.         } } }
  167.  
  168. oid
  169. aint_single_canvas()
  170. {
  171.     Pixwin *pw;
  172.     int     i, j;
  173.  
  174.     pw = canvas_pixwin(single_canvas);
  175.     for (i = 0, j = bar_offset; i < MAX_CMAP_LEN; i++, j += 3) {
  176.         pw_rop(pw, 26, j, 50, 3, PIX_SRC | PIX_COLOR(i), (Pixrect *) NULL, 0, 0);
  177.     }
  178. }
  179.  
  180. oid
  181. ut_colors(entry0, length, rd, gr, bl)
  182.     int     entry0, length;
  183.     unsigned char *rd, *gr, *bl;
  184. {
  185.     Pixwin *pw, *cpw;
  186.  
  187.     pw = (Pixwin *) window_get(base_frame, WIN_PIXWIN);
  188.  
  189.     pw_setcmsname(pw, CMAP_NAME);
  190.     pw_putcolormap(pw, entry0, length, rd, gr, bl);
  191.  
  192.     pw = (Pixwin *) window_get(single_canvas, WIN_PIXWIN);
  193.     cpw = canvas_pixwin(single_canvas);
  194.  
  195.     pw_setcmsname(pw, CMAP_NAME);
  196.     pw_putcolormap(pw, entry0, length, rd, gr, bl);
  197.     pw_setcmsname(cpw, CMAP_NAME);
  198.     pw_putcolormap(cpw, entry0, length, rd, gr, bl);
  199.  
  200.     pw = (Pixwin *) window_get(multiple_canvas, WIN_PIXWIN);
  201.     cpw = canvas_pixwin(multiple_canvas);
  202.  
  203.     pw_setcmsname(pw, CMAP_NAME);
  204.     pw_putcolormap(pw, entry0, length, rd, gr, bl);
  205.     pw_setcmsname(cpw, CMAP_NAME);
  206.     pw_putcolormap(cpw, entry0, length, rd, gr, bl);
  207.  
  208.     pw = (Pixwin *) window_get(display_canvas, WIN_PIXWIN);
  209.     cpw = canvas_pixwin(display_canvas);
  210.  
  211.     pw_setcmsname(pw, CMAP_NAME);
  212.     pw_putcolormap(pw, entry0, length, rd, gr, bl);
  213.     pw_setcmsname(cpw, CMAP_NAME);
  214.     pw_putcolormap(cpw, entry0, length, rd, gr, bl);
  215.  
  216.     pw = (Pixwin *) window_get(control_panel, WIN_PIXWIN);
  217.  
  218.     pw_setcmsname(pw, CMAP_NAME);
  219.     pw_putcolormap(pw, entry0, length, rd, gr, bl);
  220. }
  221.  
  222. oid
  223. pdate_colors(entry0, count, r, g, b)
  224.     int     entry0, count;
  225.     unsigned char *r, *g, *b;
  226. {
  227.     put_colors(entry0, count, r, g, b);
  228.     selected = FALSE;
  229.     undo_len = 0;
  230. }
  231.  
  232. oid
  233. uit_proc(item, event)
  234.     Panel_item item;
  235.     Event  *event;
  236. {
  237.     window_done(base_frame);
  238. }
  239.  
  240. oid
  241. ave_proc(item, event)
  242.     Panel_item item;
  243.     Event  *event;
  244. {
  245.     char    file_name[120];
  246.     FILE   *fd;
  247.     int     i;
  248.     extern int confirm();
  249.  
  250.     sprintf(file_name, "%s", panel_get_value(file_name_item));
  251.     if (strlen(file_name) == 0) {
  252.         post_msg("File not specified");
  253.         return;
  254.     }
  255.     if (access(file_name, 0) == 0) {
  256.         post_msg("File exists. Left mouse - confirm; Middle/Right mouse - concel");
  257.         if (!confirm()) {
  258.             post_msg("Write request cancelled");
  259.             return;
  260.         }
  261.     }
  262.     fd = fopen(file_name, "w");
  263.  
  264.     for (i = 0; i < MAX_CMAP_LEN; i++) {
  265.         colormap.map[0][i] = (unsigned char) r[i];
  266.         colormap.map[1][i] = (unsigned char) g[i];
  267.         colormap.map[2][i] = (unsigned char) b[i];
  268.     }
  269.     pr_dump(pr, fd, &colormap, RT_STANDARD, 0);
  270.     fclose(fd);
  271.     mem_destroy(pr);
  272.     post_msg("File written");
  273. }
  274.